Sistema de Nombrado en Java (JNDI) [Parte I]

El paquete javax.naming contiene clases e interfaces para acceder a servicios de nombrado.

.�Contexto

El paquete javax.naming define un interface Context, que es el interface coraz�n para localizar, unir/desunir, renombrar objetos y crear y destruir subcontextos.

La operaci�n m�s usada es lookup().

Le suministramos a lookup() un nombre de un objeto que queremos localizar, y devuelve el objeto unido a ese nombre. Por ejemplo, el siguiente fragmento de c�digo localiza una impresora y env�a un documento al objeto impresora para imprimirlo.

Printer printer = (Printer)ctx.lookup("treekiller");
printer.print(report);

.�Nombres

Cada m�todo del interface Context tiene dos sobrecargas: una que acepta un argumento Name y otra que acepta un nombre java.lang.String. Name es un interface que representa un nombre gen�rico--una secuecia ordenada de cero o m�s componentes. Para los m�todos del interface Context, un argumento Name que es un ejemplar de CompositeName representa un nombre pegado, por eso podemos nombrar un objeto usando un nombre que expanda varios espacios de nombres. Un argumento Name o de cualquier otro tipo representa un nombre compuesto.

Las sobrecargas que aceptan Name son �tiles para aplicaciones que necesitan manipular nombres, es decir, componerlos, comparar componentes, etc.

Un argumento java.lang.String representa un nombre pegado.

Las sobrecargas que aceptan nombres java.lang.String son m�s �tiles para aplicaciones sencillas como aquellas que simplemente leen un nombre y localizan el objeto corespondiente.

.�Uniones

listBindings() devuelve una enumeraci�n de uniones nombre-a-objeto. Cada uni�n representada por un ejemplar de la clase Binding.

Una uni�n es un paquete que contiene el nombre del objeto unido, el nombre de la clase del objeto, y el propio objeto.

list() es similar a listBindings(), excepto en que devuelve una enumeraci�n de NameClassPair.

NameClassPair contiene un nombre de objeto y el nombre de la clase del objeto. list() es �til para aplicaciones como navegadores que quieren descubrir informaci�n sobre los objetos unidos con un contexto pero no necesitan realmente los objetos. Aunque listBindings() proporciona la misma informaci�n, es potencialmente una operaci�n m�s costosa.

.�Referencias

Los objetos se almacenan de diferentes formas en servicios de nombres y directorios. Un servicio que soporta almacenamiento de objetos Java podria soportar el almacenamiento de un objeto en su forma serializada. Sin embargo, algunos servicios de nombres y directorios no soportan el almacenamiento de objetos Java. Adem�s, para algunos objetos del directorio, los programas Java est�n pero s�lo un grupo de aplicaciones puede acceder a ellos. En este caso, un objeto Java serializable podr�a no ser la representaci�n m�s apropiada.

Una referencia podr�a ser una representaci�n muy compacta de un objeto, mientras que su su forma serializada podria contener mucho m�s estado (puedes ver la lecci�n Conceptos de Nombrado).

El JNDI define la clase Reference para representar una referencia.

Una referencia contiene informaci�n sobre c�mo construir una copia del objeto.

El JNDI intentar� convertir las referencias localizadas en el directorio en objetos Java que pueden ser representados para que los clientes JNDI se hagan la ilusi�n de que lo que hay almacenado en el directorio son objetos Java.

.�El Contexto Inicial

En el JNDI, todos las operaciones de nombrado y directorio se realizan en relaci�n a un contexto. No hay raices absolutas. Por lo tanto, JNDI define un contexto incial, InitialContext, que proporciona un punto de arranque para las operaciones de nombrado y directorio. Una vez que tenemos el contexto inicial, podemos usarlo para localizar otros contextos y objetos.

.�Excepciones

El JNDI define una �rbol de clases para excepciones que se pueden lanzar en el curso de las operaciones de nombrado y directorio. La raiz de este �rbol de clases es NamingException.

Los programas interesados en tratar con una excepci�n particular pueden capturar la subclase correspondiente de la excepci�n. De otra forma, deberian capturar, NamingException.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO